Abstraction עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון
|
|
- Grant Richards
- 5 years ago
- Views:
Transcription
1 Abstraction עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון
2 2 Tools for Programming Complex Software Fundamentally, people use only a few simple tools to create, understand, or manage complex systems One of the most important techniques is termed abstraction.
3 3 Roadmap In this chapter we will consider abstraction, which is the most important tool used in the control of complexity We will examine various abstraction mechanisms We will present a short history of the development of abstraction tools?
4 4 Abstraction Abstraction is the purposeful suppression, or hiding, of some details of a process or artifact, In order to bring out more clearly other aspects, details, or structure
5 5 \ Average Persons Understanding of an Automobile Device that takes fuel as input and produces a rotation of the drive shaft as output. A transmission is a mechanism used to reduce a rotation of several thousand revolutions per minute to a rotation of several revolutions per minute
6 6 Information Hiding Purposeful omission of details in the development of an abstract representation Information hiding is what allows abstraction to control complexity
7 7 Abstraction in an Atlas Think of an atlas, and the various different levels of maps: A map of the world, contains mountain ranges, large political boundaries A map of a continent, contains all political boundaries, large cities A map of a country, contains more cities, major roads A map of a large city, roads, major structures A map of a portion of a city, buildings, occupants
8 Levels of Abstraction in Object Oriented Programs 8
9 9 Levels of Abstraction in Object Oriented Programs At the highest level of abstraction we view a program as a community of interacting objects (and interacting programmers). Important characteristics here are the lines of communication between the various agents.
10 10 Abstraction in OO Programs -- Packages and Name spaces The next level of abstraction is found in some (but not all) object oriented languages A package, Unit or Name Space allows a programmer to surround a collection of objects (a small community in itself) with a layer, And control visibility from outside the module Package Data Structures
11 11 Abstraction in OO Languages -- Clients and Servers The next two levels of abstraction considers the relationship between two individual objects Typically one is providing a service, and the other is using the service Client Server Two layers of abstraction: view from the client side / view from the server side
12 12 Abstraction in OO languages -- Description of Services In a good object-oriented design we can describe the services that the server provides without reference to actions that the client may perform in using those services We define the nature of the services that are offered, but not how those services are realized. Joe s Data Structure Warehouse Services offered: void push(object val); $2.00 Object top(); $1.00 void pop(); $0.75
13 13 Levels of Abstraction in OO -- Interfaces Interfaces are one way to describe services at this level of abstraction: interface Stack { public void push (Object val); public Object top () throws EmptyStackException; public void pop () throws EmptyStackException; }
14 14 Levels of Abstraction An Implementation Next we look at the same boundary, but from the server side: public class LinkedList implements Stack... { public void pop () throws EmptyStackException {... }... } Concern here is with the high level approach to providing the designated service
15 15 Levels of Abstraction -- A Method in Isolation Finally, we consider the implementation of each method in isolation: public class LinkedList implements Stack... {... public void pop () throws EmptyStackException { if (isempty()) throw new EmptyStackException(); removefirst(); // delete first element of list }... }
16 16 Summary: Levels of Abstraction Interface Implementation Strategy Methods Every level is important, and often we move quickly back and forth between levels
17 17 The name of the game: Finding the right level of abstraction To determine what details are appropriate at each level of abstraction, And, more importantly, what details should be omitted One does not want to ignore or throw away important information But one does not want to manage too much information, Or have the amount of information hide critical details
18 Abstraction 18 Forms of Abstraction Division into parts Specialization Multiple views
19 19
20 20 Is-a and Has-A abstraction Two of the most important types of abstraction are the following: Division into parts -- Has-a abstraction Division into specialization -- Is-a abstraction Both is-a and has-a abstractions will reappear in later chapters and be tied to specific programming language features
21 21 Has-A Abstraction Division into parts takes a complex system, and divides into component parts, which can then be considered in isolation. Characterized by sentences that have the words has-a : A car has-an engine, and has-a transmission A bicycle has-a wheel A window has-a menu bar Allows us to drop down a level of complexity when we consider the component in isolation
22 22 Is-a Abstraction Is-a abstraction takes a complex system, and views it as an instance of a more general class Characterized by sentences that have the words is a : A car is a wheeled vehicle, which is-a means of transportation A bicycle is a wheeled vehicle A packhorse is a means of transportation Allows us to categorize artifacts and information and make it applicable to many different situations
23 23
24 24 Encapsulation and Interchangeability An important aspect of division into parts is to clearly characterize the connection, or interface, between to components Encapsulation: there is a strict division between the inner and the outer view Allows for considering multiple different implementations of the same interface Interchangeability For example, a car can have several different types of engine and one transmission
25 25
26 26 The Service View Another way to think of an interface is as a way of describing the service that an object provides The interface is a contract for the service If the interface is upheld, then the service will be provided as described. Joe s Data Structure Warehouse Services offered: void push(object val); $2.00 Object top(); $1.00 void pop(); $0.75
27 27 A measure for dependency: Coupling Coupling is the amount of dependency among modules. A system with many dependencies has high coupling. Good systems have low coupling Low coupling is a major pattern (advice) in assigning responsibilities to modules.
28 28 Coupling
29 29 Degree of Coupling The degree of coupling between two components can be qualitatively measured by determining the effects of changing the contract or interface between two components or systems. For example: What would happen if you added or deleted a property from a class? What would happen if you changed the data type of a column in a table? What would happen if you added a column to a table? What would happen if your database server changed from SQL Server to mysql or Oracle? The degree of pain that each of these changes would cause you is a good qualitative measurement of how tightly coupled your components are to the components they depend on
30 30 Low Coupling
31 31 Other Types of Abstraction -- Composition While is-a and has-a are two important types of abstraction, there are others Composition is one example; a form of has-a; characterized by the following: Primitive forms Rules for combining old values to create new values The idea that new values can also be subject to further combination Examples include regular expressions, type systems, windows, lots of other complex systems
32 32
33 33 Composition in the Creation of User Interfaces
34 34 Example of Composition Regular Expressions (empty set) denoting the empty set. (empty string) ε denoting the set containing only the "empty" string, which has no characters at all. (literal character) a in Σ denoting the set containing only the character a. (concatenation) RS denoting the set { αβ α in R and β in S }. For example {ab, c}{d, ef} = {abd, abef, cd, cef}. (alternation) R S denoting the set union of R and S. For example {ab, c} ab, d, ef = {ab, c, d, ef}. (Kleene star) R denoting the smallest superset of R that contains ε and is closed under string concatenation. This is the set of all strings that can be made by concatenating any finite number (including zero) of strings from R. For example, 0,1 is the set of all finite binary strings (including the empty string), and ab, c = {ε, ab, c, abab, abc, cab, cc, ababab, abcab, }.
35 35 Design Patterns Patterns are another attempt to document and reuse abstractions Patterns are description of proven and useful relationships between objects; which can help guide the solution of new problems Example pattern, Proxy: Client Proxy Server We ll have many more patterns in a later chapter
36 36 A Short History of Abstraction Mechanisms Another way to better understand OOP is to put it in context with the history of abstraction in computer science: i. Assembly languages ii. iii. iv. Procedures Modules ADT v. The Service View vi. vii. Objects The future...
37 37 ENIAC The First Electronic Computer
38 38 Assembly Languages Assembly languages and linkers were perhaps the first tools used to abstract features of the bare machine. Addresses could be represented symbolically, not as a number Symbolic names for operations Linking of names and locations performed automatically Binary Hexa. B0 61 ASM MOV AL, 61h ; Load AL with 97 decimal (61 hex)
39 39 Procedures and Functions Libraries of procedures and functions (such as mathematical or input/output libraries) provided the first hints of information hiding They permit the programmer to think about operations in high level terms, concentrating on what is being done, not how it is being performed But they are not an entirely effective mechanism of information hiding
40 40 Information Hiding The Problem of Stacks int datastack[100]; int datatop = 0; void init() // initialize the stack { datatop = 0; } void push(int val) // push a value on to the stack { if (datatop < 100) datastack [datatop++] = val; } int top() // get the top of the stack { if (datatop > 0) return datastack [datatop - 1]; else return 0; } int pop() // pop element from the stack { if (datatop > 0) return datastack [--datatop]; else return 0; } Where can you hide the implementation?
41 41 Modules Modules basically provided collections of procedures and data With import and export statements Solves the problem of encapsulation
42 42 Parnas's Principles David Parnas described two principles for the proper use of modules: One must provide the intended user of a module with all the information needed to use the module correctly, and with nothing more One must provide the implementer of a module with all the information needed to complete the module, and nothing more
43 43 What if we need more than one stack?
44 44 Abstract Data Types An Abstract Data Type is a programmer-defined data type that can be manipulated in a manner similar to system-provided data types Must have the ability to instantiate many different copies of the data type Data type can be manipulated using provided operations, without knowledge of internal representation ADTs were important not because they were data structures, but because they provided an easily characterized service to the rest of an application
45 45 Modules and ADTs Modules are frequently used as an implementation technique for abstract data types modules are an implementation technique and that the abstract data type is a more theoretical concept. The two are related but are not identical
46 46 Modules and ADTs To build an abstract data type 1. Export a type definition. 2. Make available a set of operations that can be used to manipulate instances of the type. 3. Protect the data associated with the type so that they can be operated on only by the provided routines. 4. Make multiple instances of the type
47 47 Three Eons of History Looking at this history, we can separate it into three periods of time: Functionality of the application Data types used in an application services provided by objects in the application
48 48 Objects - ADT's with Message Passing Characteristics of Objects: Encapsulation -- similar to modules Instantiation -- similar to ADT's Messages -- dynamic binding of procedure names to behavior Classes -- a way of organization that permits sharing and reuse Polymorphism -- A new form of software reuse using dynamic binding
49 49 OMG one picture MDA Vertical Domains Core Technologies Core Target Platforms Pervasive Services
50 50 What Does the Future Hold What will be the next evolutionary step in software? Prediction is hard, particularly about the future However, once you have accepted the idea of an application formed from interacting agents: There is no reason why those components must exist on the same computer (distributed computing) Or be written in the same language (components) So some of the trends we see today in software are natural results of the OOP mind set
Chapter Seven: Regular Expressions
Chapter Seven: Regular Expressions Regular Expressions We have seen that DFAs and NFAs have equal definitional power. It turns out that regular expressions also have exactly that same definitional power:
More informationLecture 1. Abstraction
Lecture 1 Abstraction 1 Programming Techniques Unstructured Programming Procedural Programming Modular & Structural Programming Abstract Data Type Object-Oriented Programming 2 Unstructured Programming
More informationClasses and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות
Classes and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות 2 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static,
More informationChapter Seven: Regular Expressions. Formal Language, chapter 7, slide 1
Chapter Seven: Regular Expressions Formal Language, chapter 7, slide The first time a young student sees the mathematical constant π, it looks like just one more school artifact: one more arbitrary symbol
More informationClasses and Methods לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Classes and Methods לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון 22 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static, compile time representation of object-oriented
More informationThe Stack ADT. Stacks. The Stack ADT. The Stack ADT. Set of objects in which the location an item is inserted and deleted is prespecified.
The Stack ADT Stacks Set of objects in which the location an item is inserted and deleted is prespecified Stacks! Insert in order! Delete most recent item inserted! LIFO - last in, first out Stacks 2 The
More informationObject interconnections גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Object interconnections גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap In this chapter we move up a level of abstraction, and consider collections of objects working together Our focus will
More informationObject Oriented Software Design
Object Oriented Software Design Introduction to Object Oriented Programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa September 23, 2010 G. Lipari (Scuola Superiore
More informationAbstraction. Abstraction
9/11/2003 1 Software today is more complex than it has ever been. Software controls Space shuttle systems during launch Elevators in 100-story buildings Cross-Atlantic transportation routes of freighters
More informationClasses and Methods גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Classes and Methods גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static, compile time representation of object-oriented
More informationChapter 13 Object Oriented Programming. Copyright 2006 The McGraw-Hill Companies, Inc.
Chapter 13 Object Oriented Programming Contents 13.1 Prelude: Abstract Data Types 13.2 The Object Model 13.4 Java 13.1 Prelude: Abstract Data Types Imperative programming paradigm Algorithms + Data Structures
More informationMIT Specifying Languages with Regular Expressions and Context-Free Grammars
MIT 6.035 Specifying Languages with Regular essions and Context-Free Grammars Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Language Definition Problem How to precisely
More informationObject-Oriented Design גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Object-Oriented Design גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Why Start with Design? Object-oriented thinking begins with objectoriented design It is the easiest way to see the problems of
More informationStatic and Dynamic Behavior עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות ע "י ד"ר גרא וייס
Static and Dynamic Behavior עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות ע "י ד"ר גרא וייס 2 Roadmap In this chapter we will examine how differences
More informationInheritance and Substitution גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Inheritance and Substitution גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap In this chapter we will start to investigate the concepts of inheritance and substitution: The intuitive and practical
More informationLecture No.04. Data Structures
Lecture No.04 Data Structures Josephus Problem #include "CList.cpp" void main(int argc, char *argv[]) { CList list; int i, N=10, M=3; for(i=1; i
More informationImplications of Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Implications of Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap In this chapter we will investigate some of the implications of the principle of substitution in statically typed
More informationInheritance and Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות ע"י ד"ר גרא וייס
Inheritance and Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות ע"י ד"ר גרא וייס 2 Roadmap In this chapter we will start to investigate the
More informationMIT Specifying Languages with Regular Expressions and Context-Free Grammars. Martin Rinard Massachusetts Institute of Technology
MIT 6.035 Specifying Languages with Regular essions and Context-Free Grammars Martin Rinard Massachusetts Institute of Technology Language Definition Problem How to precisely define language Layered structure
More informationOutline and Reading. The Stack ADT ( 4.2.1) Applications of Stacks ( 4.2.3) Array-based implementation ( 4.2.2) Growable array-based stack.
Stacks Outline and Reading The Stack ADT ( 4.2.1) Applications of Stacks ( 4.2.3) Array-based implementation ( 4.2.2) Growable array-based stack Stacks 2 Abstract Data Types (ADTs) An abstract data type
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationObject- Oriented Design with UML and Java Part I: Fundamentals
Object- Oriented Design with UML and Java Part I: Fundamentals University of Colorado 1999-2002 CSCI-4448 - Object-Oriented Programming and Design These notes as free PDF files: http://www.softwarefederation.com/cs4448.html
More informationCS 10, Fall 2015, Professor Prasad Jayanti
Problem Solving and Data Structures CS 10, Fall 2015, Professor Prasad Jayanti Midterm Practice Problems We will have a review session on Monday, when I will solve as many of these problems as possible.
More informationDesign Patterns גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Design Patterns גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Problem: Reusability in OO Designing OO software is hard, and designing reusable OO software is even harder: Software should be specific
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationComplexity Theory. Compiled By : Hari Prasad Pokhrel Page 1 of 20. ioenotes.edu.np
Chapter 1: Introduction Introduction Purpose of the Theory of Computation: Develop formal mathematical models of computation that reflect real-world computers. Nowadays, the Theory of Computation can be
More informationSoftware Architecture
Software Architecture Lecture 5 Call-Return Systems Rob Pettit George Mason University last class data flow data flow styles batch sequential pipe & filter process control! process control! looping structure
More informationObject Oriented Design: Identifying Objects
Object Oriented Design: Identifying Objects Review What did we do in the last lab? What did you learn? What classes did we use? What objects did we use? What is the difference between a class and an object?
More informationSTUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING
OBJECT ORIENTED PROGRAMMING STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING 1. Object Oriented Programming Paradigms 2. Comparison of Programming Paradigms 3. Basic Object Oriented Programming
More informationObject-oriented perspective
Starting Reader #2 Object-oriented perspective Operating system = computer interface Shell/libraries/system calls = OS interface Will return to OS topics in upcoming lectures. Now: OO intro. Objects l
More informationInheritance. OOP components. Another Example. Is a Vs Has a. Virtual Destructor rule. Virtual Functions 4/13/2017
OOP components For : COP 3330. Object oriented Programming (Using C++) http://www.compgeom.com/~piyush/teach/3330 Data Abstraction Information Hiding, ADTs Encapsulation Type Extensibility Operator Overloading
More informationOverloading המחלקה למדעי המחשב עזאם מרעי אוניברסיטת בן-גוריון
Overloading עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap In this chapter we will investigate the idea of overloading: Overloading based on scopes Overloading based on type signatures Coercion,
More informationOutline. Example stack Version 1 -- int stack with fixed array Version 2 -- int stack with flexible array Version 3 -- with interface
Outline Example stack Version 1 -- int stack with fixed array Version 2 -- int stack with flexible array Version 3 -- with interface Visibility issues 6 :: 2 0024 Spring 2010 Stacks push(value) -- store
More informationStacks. Common data structures - useful for organizing data for specific tasks Lists Stacks - an Abstract Data Type
Stacks Common data structures - useful for organizing data for specific tasks Lists Stacks - an Abstract Data Type Class interface Polymorphism Use of List as representation of Stacks Pop versus Peek 1
More informationJAVA: A Primer. By: Amrita Rajagopal
JAVA: A Primer By: Amrita Rajagopal 1 Some facts about JAVA JAVA is an Object Oriented Programming language (OOP) Everything in Java is an object application-- a Java program that executes independently
More informationIT 4043 Data Structures and Algorithms. Budditha Hettige Department of Computer Science
IT 4043 Data Structures and Algorithms Budditha Hettige Department of Computer Science 1 Syllabus Introduction to DSA Abstract Data Types List Operation Using Arrays Stacks Queues Recursion Link List Sorting
More informationFORTH SEMESTER DIPLOMA EXAMINATION IN ENGINEERING/ TECHNOLIGY- OCTOBER, 2012 DATA STRUCTURE
TED (10)-3071 Reg. No.. (REVISION-2010) Signature. FORTH SEMESTER DIPLOMA EXAMINATION IN ENGINEERING/ TECHNOLIGY- OCTOBER, 2012 DATA STRUCTURE (Common to CT and IF) [Time: 3 hours (Maximum marks: 100)
More informationCS 370 Design Heuristics D R. M I C H A E L J. R E A L E F A L L
CS 370 Design Heuristics D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction Now we ll talk about ways of thinking about design Guidelines for trials in trial and errors Major Design Heuristics
More informationNon-deterministic Finite Automata (NFA)
Non-deterministic Finite Automata (NFA) CAN have transitions on the same input to different states Can include a ε or λ transition (i.e. move to new state without reading input) Often easier to design
More informationLanguages and Compilers
Principles of Software Engineering and Operational Systems Languages and Compilers SDAGE: Level I 2012-13 3. Formal Languages, Grammars and Automata Dr Valery Adzhiev vadzhiev@bournemouth.ac.uk Office:
More information1.00 Lecture 26. Data Structures: Introduction Stacks. Reading for next time: Big Java: Data Structures
1.00 Lecture 26 Data Structures: Introduction Stacks Reading for next time: Big Java: 19.1-19.3 Data Structures Set of primitives used in algorithms, simulations, operating systems, applications to: Store
More informationProgramming Languages 2nd edition Tucker and Noonan"
Programming Languages 2nd edition Tucker and Noonan" Chapter 13 Object-Oriented Programming I am surprised that ancient and Modern writers have not attributed greater importance to the laws of inheritance..."
More informationLecture 6. COMP1006/1406 (the OOP course) Summer M. Jason Hinek Carleton University
Lecture 6 COMP1006/1406 (the OOP course) Summer 2014 M. Jason Hinek Carleton University today s agenda assignments A1,A2,A3 are all marked A4 marking just started A5 is due Friday, A6 is due Monday a quick
More informationSoftware Architecture (Lesson 2) Object-Oriented Paradigm (1)
Software Architecture (Lesson 2) Object-Oriented Paradigm (1) Table of Contents Introduction... 2 1.1 Basic Concepts... 2 1.1.1 Objects... 2 1.1.2 Messages... 3 1.1.3 Encapsulation... 4 1.1.4 Classes...
More informationStructured Programming
CS 170 Java Programming 1 Objects and Variables A Little More History, Variables and Assignment, Objects, Classes, and Methods Structured Programming Ideas about how programs should be organized Functionally
More informationMore Data Structures (Part 1) Stacks
More Data Structures (Part 1) Stacks 1 Stack examples of stacks 2 Top of Stack top of the stack 3 Stack Operations classically, stacks only support two operations 1. push 2. pop add to the top of the stack
More informationConcepts of Programming Languages
Concepts of Programming Languages Lecture 10 - Object-Oriented Programming Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages
More informationSoftware Service Engineering
Software Service Engineering Lecture 4: Unified Modeling Language Doctor Guangyu Gao Some contents and notes selected from Fowler, M. UML Distilled, 3rd edition. Addison-Wesley Unified Modeling Language
More informationCHAPTER 5 GENERAL OOP CONCEPTS
CHAPTER 5 GENERAL OOP CONCEPTS EVOLUTION OF SOFTWARE A PROGRAMMING LANGUAGE SHOULD SERVE 2 RELATED PURPOSES : 1. It should provide a vehicle for programmer to specify actions to be executed. 2. It should
More informationIntroduction to Object- Oriented Programming
Introduction to Object- Oriented Programming Reusing this material This work is licensed under a Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International License. http://creativecommons.org/licenses/by-nc-sa/4.0/deed.en_us
More informationAbout the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Compiler Design
i About the Tutorial A compiler translates the codes written in one language to some other language without changing the meaning of the program. It is also expected that a compiler should make the target
More informationObject-Oriented Programming (OOP) Fundamental Principles of OOP
Object-Oriented Programming (OOP) O b j e c t O r i e n t e d P r o g r a m m i n g 1 Object-oriented programming is the successor of procedural programming. The problem with procedural programming is
More informationM301: Software Systems & their Development. Unit 4: Inheritance, Composition and Polymorphism
Block 1: Introduction to Java Unit 4: Inheritance, Composition and Polymorphism Aims of the unit: Study and use the Java mechanisms that support reuse, in particular, inheritance and composition; Analyze
More informationCSI33 Data Structures
Outline Department of Mathematics and Computer Science Bronx Community College August 29, 2018 Outline Outline 1 Chapter 2: Data Abstraction Outline Chapter 2: Data Abstraction 1 Chapter 2: Data Abstraction
More informationProgramming, Data Structures and Algorithms Prof. Hema Murthy Department of Computer Science and Engineering Indian Institute of Technology, Madras
Programming, Data Structures and Algorithms Prof. Hema Murthy Department of Computer Science and Engineering Indian Institute of Technology, Madras Module 06 Lecture - 46 Stacks: Last in first out Operations:
More informationObject-Oriented Languages and Object-Oriented Design. Ghezzi&Jazayeri: OO Languages 1
Object-Oriented Languages and Object-Oriented Design Ghezzi&Jazayeri: OO Languages 1 What is an OO language? In Ada and Modula 2 one can define objects encapsulate a data structure and relevant operations
More informationCS 216 Exam 1 Fall SOLUTION
CS 216 Exam 1 Fall 2004 - SOLUTION Name: Lab Section: Email Address: Student ID # This exam is closed note, closed book. You will have an hour and fifty minutes total to complete the exam. You may NOT
More informationAn OBJECT contains VARIABLES = PROPERTIES and METHODS = BEHAVIORS. Outline the general nature of an object.
D Object oriented programming Notes by Dave Mulkey, 2015, Germany D.1 Objects as a programming concept (6 hours) The paradigm of object oriented programming should be introduced through discussion and
More informationC++ Programming: Introduction to C++ and OOP (Object Oriented Programming)
C++ Programming: Introduction to C++ and OOP (Object Oriented Programming) 2018 년도 2 학기 Instructor: Young-guk Ha Dept. of Computer Science & Engineering Contents Brief introduction to C++ OOP vs. Procedural
More informationOverriding המחלקה למדעי המחשב עזאם מרעי אוניברסיטת בן-גוריון
Overriding עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap A method in a child class overrides a method in the parent class if it has the same name and type signature: Parent void method(int,float)
More informationAssignment 5. Introduction
Assignment 5 Introduction The objectives of this assignment are to exercise a few advanced object oriented programming and basic data structures concepts. The first mini-goal is to understand that objects
More informationCS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University
CS 11 Introduction to Computing II Wayne Snyder Department Boston University Today Object-Oriented Programming Concluded Stacks, Queues, and Priority Queues as Abstract Data Types Reference types: Basic
More informationEEL 3801 Introduction to Computer Engineering Summer Home Work Schedule
EEL 3801 Introduction to Computer Engineering Summer 2005 Home Work Schedule Schedule of Assignments: Week HW# Due Points Title 1 07/05/05 3% Memory dump in assembly 2 07/19/05 3% Solve a Maze 3 08/02/05
More informationClasses, subclasses, subtyping
1 CSCE 314: Programming Languages Dr. Flemming Andersen Classes, subclasses, subtyping 2 3 Let me try to explain to you, what to my taste is characteristic for all intelligent thinking. It is, that one
More informationUser. Application program. Interfaces. Operating system. Hardware
Operating Systems Introduction to Operating Systems and Computer Hardware Introduction and Overview The operating system is a set of system software routines that interface between an application program
More informationCLASSIC DATA STRUCTURES IN JAVA
CLASSIC DATA STRUCTURES IN JAVA Timothy Budd Oregon State University Boston San Francisco New York London Toronto Sydney Tokyo Singapore Madrid Mexico City Munich Paris Cape Town Hong Kong Montreal CONTENTS
More informationfor (i=1; i<=100000; i++) { x = sqrt (y); // square root function cout << x+i << endl; }
Ex: The difference between Compiler and Interpreter The interpreter actually carries out the computations specified in the source program. In other words, the output of a compiler is a program, whereas
More informationThe University Of Michigan. EECS402 Lecture 06. Andrew M. Morgan. Savitch Ch. 6 Intro To OOP Classes Objects ADTs.
The University Of Michigan Lecture 06 Andrew M. Morgan Savitch Ch. 6 Intro To OOP Classes Objects ADTs Complexity Increases A Little History Early computing Cheap Programmers, Expensive Computers Binary
More informationStacks. stacks of dishes or trays in a cafeteria. Last In First Out discipline (LIFO)
Outline stacks stack ADT method signatures array stack implementation linked stack implementation stack applications infix, prefix, and postfix expressions 1 Stacks stacks of dishes or trays in a cafeteria
More informationStatic and Dynamic Behavior לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Static and Dynamic Behavior לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון 22 Roadmap In this chapter we will examine how differences in static and dynamic features effect object-oriented programming
More informationENCAPSULATION. private, public, scope and visibility rules. packages and package level access.
ENCAPSULATION private, public, scope and visibility rules. packages and package level access. Q. Explain the term Encapsulation with an example? Ans: The wrapping up to data and methods into a single units
More informationData Structures and Algorithms
Data Structures and Algorithms CS245-2017S-04 Stacks and Queues David Galles Department of Computer Science University of San Francisco 04-0: Abstract Data Types An Abstract Data Type is a definition of
More informationProcedure and Object- Oriented Abstraction
Procedure and Object- Oriented Abstraction Scope and storage management cs5363 1 Procedure abstractions Procedures are fundamental programming abstractions They are used to support dynamically nested blocks
More informationException Handling: A False Sense of Security Cargill, P1
This is a slightly modified version of an article that appeared in the November-December 1994 issue of the C++ Report. Exception Handling: A False Sense of Security Cargill, P1 by Tom Cargill Cargill,
More informationCh 1: The Architecture Business Cycle
Ch 1: The Architecture Business Cycle For decades, software designers have been taught to build systems based exclusively on the technical requirements. Software architecture encompasses the structures
More informationRegular Expressions. Chapter 6
Regular Expressions Chapter 6 Regular Languages Generates Regular Language Regular Expression Recognizes or Accepts Finite State Machine Stephen Cole Kleene 1909 1994, mathematical logician One of many
More informationDot and Scope Resolution Operator
Dot and Scope Resolution Operator Used to specify "of what thing" they are members Dot operator: Specifies member of particular object Scope resolution operator: Specifies what class the function definition
More informationCS111: PROGRAMMING LANGUAGE II. Lecture 1: Introduction to classes
CS111: PROGRAMMING LANGUAGE II Lecture 1: Introduction to classes Lecture Contents 2 What is a class? Encapsulation Class basics: Data Methods Objects Defining and using a class In Java 3 Java is an object-oriented
More informationProgramming Lecture 3
Programming Lecture 3 Expressions (Chapter 3) Primitive types Aside: Context Free Grammars Constants, variables Identifiers Variable declarations Arithmetic expressions Operator precedence Assignment statements
More informationIn One Slide. Outline. LR Parsing. Table Construction
LR Parsing Table Construction #1 In One Slide An LR(1) parsing table can be constructed automatically from a CFG. An LR(1) item is a pair made up of a production and a lookahead token; it represents a
More informationChapter 1: Object-Oriented Programming Using C++
Chapter 1: Object-Oriented Programming Using C++ Objectives Looking ahead in this chapter, we ll consider: Abstract Data Types Encapsulation Inheritance Pointers Polymorphism Data Structures and Algorithms
More informationSymbol Tables Symbol Table: In computer science, a symbol table is a data structure used by a language translator such as a compiler or interpreter, where each identifier in a program's source code is
More informationA STUDY OF OBJECT ORIENTED ANALYSIS AND DESIGN
A STUDY OF OBJECT ORIENTED ANALYSIS AND DESIGN GARJE RAKESH RAMESHRAO RESEARCH SCHOLAR, DEPT. OF COMPUTER SCIENCE CMJ UNIVERSITY, SHILLONG, MEGHALAYA INTRODUCTION Object-oriented Analysis and Design is
More informationShadows in the graphics pipeline
Shadows in the graphics pipeline Steve Marschner Cornell University CS 569 Spring 2008, 19 February There are a number of visual cues that help let the viewer know about the 3D relationships between objects
More informationcsci 210: Data Structures Stacks and Queues
csci 210: Data Structures Stacks and Queues 1 Summary Topics Stacks and Queues as abstract data types ( ADT) Implementations arrays linked lists Analysis and comparison Applications: searching with stacks
More informationData Structures And Algorithms
Data Structures And Algorithms Stacks Eng. Anis Nazer First Semester 2017-2018 Stack An Abstract data type (ADT) Accessed only on one end Similar to a stack of dishes you can add/remove on top of stack
More informationLR Parsing LALR Parser Generators
LR Parsing LALR Parser Generators Outline Review of bottom-up parsing Computing the parsing DFA Using parser generators 2 Bottom-up Parsing (Review) A bottom-up parser rewrites the input string to the
More informationCompilers CS S-01 Compiler Basics & Lexical Analysis
Compilers CS414-2005S-01 Compiler Basics & Lexical Analysis David Galles Department of Computer Science University of San Francisco 01-0: Syllabus Office Hours Course Text Prerequisites Test Dates & Testing
More informationWhere are we going? EEC 521: Software Engineering. A Note on Quality. What is Design? Introduction to Design. Our focus
Where are we going? Many levels of design: EEC 521: Software Engineering Introduction to Our focus Method Class/Component Subsystem GUI Data Format Architectural 10/6/09 EEC 521: Software Engineering 1
More information1. Write two major differences between Object-oriented programming and procedural programming?
1. Write two major differences between Object-oriented programming and procedural programming? A procedural program is written as a list of instructions, telling the computer, step-by-step, what to do:
More information4. Lexical and Syntax Analysis
4. Lexical and Syntax Analysis 4.1 Introduction Language implementation systems must analyze source code, regardless of the specific implementation approach Nearly all syntax analysis is based on a formal
More informationUnit 1: Preliminaries Part 1: Course Introduction, Abstraction, and ADT s
Unit 1: Preliminaries Part 1: Course Introduction, Abstraction, and ADT s Engineering 4892: Data Structures Faculty of Engineering & Applied Science Memorial University of Newfoundland April 23, 2010 ENGI
More informationGrading: 3 pts each part. If answer is correct but uses more instructions, 1 pt off. Wrong answer 3pts off.
Department of Electrical and Computer Engineering University of Wisconsin Madison ECE 552 Introductions to Computer Architecture Homework #2 (Suggested Solution) 1. (10 points) MIPS and C program translations
More informationObject-Oriented Programming Concepts
Object-Oriented Programming Concepts Real world objects include things like your car, TV etc. These objects share two characteristics: they all have state and they all have behavior. Software objects are
More informationOutline and Reading. The Stack ADT ( 2.1.1) Applications of Stacks ( 2.1.1) Array-based implementation ( 2.1.1) Growable array-based stack ( 1.
Stacks Outline and Reading The Stack ADT ( 2.1.1) Applications of Stacks ( 2.1.1) Array-based implementation ( 2.1.1) Growable array-based stack ( 1.5) Stacks 2 Abstract Data Types (ADTs) An abstract data
More informationUNIT I. 3. Write a short notes on process view of 4+1 architecture. 4. Why is object-oriented approach superior to procedural approach?
Department: Information Technology Questions Bank Class: B.E. (I.T) Prof. Bhujbal Dnyaneshwar K. Subject: Object Oriented Modeling & Design dnyanesh.bhujbal11@gmail.com ------------------------------------------------------------------------------------------------------------
More informationCompilers CS S-01 Compiler Basics & Lexical Analysis
Compilers CS414-2017S-01 Compiler Basics & Lexical Analysis David Galles Department of Computer Science University of San Francisco 01-0: Syllabus Office Hours Course Text Prerequisites Test Dates & Testing
More informationCS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University
CS 112 Introduction to Computing II Wayne Snyder Department Boston University Today Introduction to Linked Lists Stacks and Queues using Linked Lists Next Time Iterative Algorithms on Linked Lists Reading:
More informationProcedural abstraction SICP Data abstractions. The universe of procedures forsqrt. Procedural abstraction example: sqrt
Data abstractions Abstractions and their variations Basic data abstractions Why data abstractions are useful Procedural abstraction Process of procedural abstraction Define formal parameters, capture process
More informationBottom-Up Parsing. Lecture 11-12
Bottom-Up Parsing Lecture 11-12 (From slides by G. Necula & R. Bodik) 9/22/06 Prof. Hilfinger CS164 Lecture 11 1 Bottom-Up Parsing Bottom-up parsing is more general than topdown parsing And just as efficient
More information